#include <my_header.h>

/* Usage: ./5_dup_stdout filenaem */
int main(int argc, char *argv[]){                                  
    ARGS_CHECK(argc, 2);
    // 重定向stdout之前先输出一句话
    // 末尾跟换行符刷新缓冲区
    printf("重定向之前\n");
    int fd = open(argv[1], O_RDWR);
    ERROR_CHECK(fd, -1, "open");

    close(STDOUT_FILENO);
    // 复制fd的文件描述符，分配给的文件描述符为1(stdout_fd)
    int fd_cp = dup(fd);
    printf("fd = %d\n", fd);
    printf("fd_cp = %d\n", fd_cp);
    printf("重定向输出到文件完毕！");

    fflush(stdout);     // 在关闭文件描述符释放文件对
// 象之前，刷新一下标准输出缓冲区，避免数据还留在缓冲区中导致数据丢失
   
    // 关闭文件描述符
    close(fd);
    close(fd_cp);
    return 0;
}


